package cn.jbolt.meinvtu.meinv;

import java.util.ArrayList;
import java.util.List;

import com.jfinal.aop.Inject;
import com.jfinal.kit.Ret;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;

import cn.hutool.core.util.PinyinUtil;
import cn.jbolt.meinvtu.album.AlbumService;
import cn.jbolt.meinvtu.common.config.MainConfig;
import cn.jbolt.meinvtu.common.model.Meinv;
import cn.jbolt.meinvtu.photo.PhotoService;

/**
* @author 小木 QQ 909854136
* @version 创建时间：2019年3月22日 上午4:01:05
*/
public class MeinvService {
	@Inject
	private AlbumService albumService;
	@Inject
	private PhotoService photoService;

	public Ret delete(Integer meinvId) {
		Meinv meinv=Meinv.dao.findById(meinvId);
		if(meinv==null){
			return Ret.fail("msg","美女不存在");
		}
		boolean success=meinv.delete();
		if(success){
			albumService.deleteByMeinvId(meinv.getId());
			photoService.deleteByMeinvId(meinv.getId());
			return Ret.ok();
		}
		return Ret.fail("msg", "删除失败了...");
	}

	public Ret save(String names) {
		if(StrKit.isBlank(names)){
			return Ret.fail("msg", "你不告诉我美女的名字，我上哪儿给你抓~");
		}
		names=names.trim();
		if(names.indexOf(" ")!=-1){
			String[] nameArray=names.split(" ");
			if(nameArray!=null&&nameArray.length>0){
				List<Meinv> meinvs=new ArrayList<Meinv>();
				Meinv meinv;
				boolean hasSameName=false;
				for(String name:nameArray){
					if(StrKit.isBlank(name)){
						continue;
					}
					boolean nameIsExist=checkNameIsExist(name);
					if(nameIsExist){hasSameName=true;continue;}
					
					meinv=new Meinv().set("name", name);
					meinv.setPinyin(PinyinUtil.getPinYin(name));
					meinv.setUrl(MainConfig.DOMAIN+meinv.getPinyin()+".html");
					meinvs.add(meinv);
				}
				if(meinvs.size()==0){
					return Ret.fail("msg","提交数据中有问题"+(hasSameName?"，都重名了!":"!"));
				}
				Db.batchSave(meinvs, 10);
			}else{
				return Ret.fail("msg", "你确定你给我的是美女的名字吗？再瞅瞅！");
			}
		}else{
			boolean nameIsExist=checkNameIsExist(names);
			if(nameIsExist){
				return Ret.fail("msg","【"+names+"】重名啦，换一个吧");
			}
			//如果就一个名字 直接保存
			Meinv meinv=new Meinv().set("name", names);
			meinv.setPinyin(PinyinUtil.getPinYin(names));
			meinv.setUrl(MainConfig.DOMAIN+meinv.getPinyin()+".html");
			meinv.save();
		}
		return Ret.ok();
	}

	private boolean checkNameIsExist(String name) {
		Integer id=Db.queryInt("select id from meinv where name=?",name);
		return (id!=null&&id>0);
	}

}
